// 商品列表页面
angular.module('goodsList.controller', ['goodsList.service'])
  .controller('GoodsListCtrl', function ($scope, $stateParams, GoodsListFty, $ionicLoading, $ionicHistory) {

    // 前台绑定的数据
    $scope.obj_goodsListData=null;
    // 是否有更多数据可以加载
    $scope.pms_isMoreItemsAvailable=true;
    // 分页查询对象
    $scope.obj_pagingInfo = {
      amountMax: "",
      amountMin: "",
      billNum: "",
      createUser: "",
      dateFrom: "",
      dateTo: "",
      deptID: "",
      deptName: "",
      keyWord: "",
      loginName: "",
      billType: "",
      pageNum: 1,// 页码的索引
      pageSize: 10,// 一页要显示多少条数据
      sortFlag: "0",
      sortType: "desc",
      typeNumber:""// 类别编号
    };


    // 视图事件
    $scope.$on('$ionicView.beforeEnter', function (e) {
      $scope.func_refreshGoodsList();
    });



    // 下拉刷新触发的方法
    $scope.func_refreshGoodsList=function(){
      $scope.obj_pagingInfo.typeNumber=$stateParams.typeNumber;
      $scope.obj_pagingInfo.pageNum=1;
      var message=JSON.stringify($scope.obj_pagingInfo);

      console.log(message);

      // 从服务器端获取数据
      var promise = GoodsListFty.refreshGoodsList(message);
      promise.then(
        function (data) {
          // 代码健壮性，代码的容错性高不高。
          // 比如注册的时候，前台要做校验，后台也要做校验。后台不能相信前台传递过来的任何东西，还需要做校验。
          // 需求就让你做列表有下拉刷新和加载更多功能，但是你要考虑到所有的可能出现的问题，报告给需求人员。
          if(data){
            $scope.obj_goodsListData=data;
            $scope.pms_isMoreItemsAvailable=true;
          }else{
            $scope.pms_isMoreItemsAvailable=false;
          }
        },
        function (err) {
        })
        .finally(function () {
          // 停止广播ion-refresher
          $scope.$broadcast('scroll.refreshComplete');
        })



      //// 如果我们调用的方法里面只有一个参数，那么message就是这个参数本身
      //var a="100001"
      //GoodsListFty.refreshGoodsList(a);
      //// 如果传递的参数是一个对象，那么message就是这个对象序列化之后的字符串
      //var obj={
      //  a:"100001",
      //  b:2
      //}
      //var messsage=JSON.stringify(obj)
      //GoodsListFty.refreshGoodsList(message);
    }

    // 加载更多的时候触发的方法
    $scope.func_loadMoreGoodsList=function(){
      $ionicLoading.show({
        template: 'Loading...'
      });

      $scope.obj_pagingInfo.typeNumber=$stateParams.typeNumber;
      $scope.obj_pagingInfo.pageNum++;
      var message=JSON.stringify($scope.obj_pagingInfo);
      console.log(message);
      // 从服务器端获取数据
      var promise = GoodsListFty.loadMoreGoodsList($stateParams.typeNumber);
      promise.then(
        function (data) {
          if(data){
            $.each(data, function (i, item) {
              $scope.obj_goodsListData.push(item);
            });
          }else{
            $scope.pms_isMoreItemsAvailable=false;
          }
        },
        function (err) {
        })
        .finally(function () {
          // 停止广播ion-refresher
          $scope.$broadcast('scroll.infiniteScrollComplete');
          setTimeout(function(){
            $ionicLoading.hide();
          },3000)

        })
    }


    $scope.func_goBack=function(){
      $ionicHistory.goBack();
    }

  })
